import router from '@/router'
import { useLoginUserStore } from '@/stores/userLoginUserStore.ts'
import { message } from 'ant-design-vue'

//第一次进入页面才需要查询用户状态
let isFirst = true

/**
 * 全局权限校验,需要在main.js中引入
 * 目前控制只有管理员才能看到用户管理，其他用户点击了提示没权限，并且强制跳到登录页面
 */
router.beforeEach(async (to, from, next) => {
  const userstore = useLoginUserStore()
  //存储用户状态
  let loginUser = userstore.loginUser
  if (isFirst) {
    //确保页面刷新，首次加载时等待后端返回用户信息，再进行权限校验
    await userstore.fetchLoginUser()
    loginUser = userstore.loginUser
    isFirst = false
  }

  //要跳转到的路径是以admin开头的
  if (to.fullPath.startsWith('/admin')) {
    //用户信息为空，或者用户的角色不为管理员
    if (loginUser === null || loginUser.userRole !== 'admin') {
      message.error('无权操作')
      next(`/user/login?redirect=${to.fullPath}`)
      return
    }
  }
  next()
})
